fix(prose-tests): prescribe the cross-check, drop a check that cannot fire, lint the scope - #573
Merged
Merged
Conversation
This was referenced Jul 27, 2026
leeovery
force-pushed
the
fix/prose-prescribe-what-we-observed
branch
from
July 27, 2026 15:49
3cb2b58 to
e7ed77e
Compare
leeovery
force-pushed
the
fix/prose-closing-turn-and-known-difference
branch
from
July 27, 2026 15:50
bb9b308 to
d00a14a
Compare
leeovery
force-pushed
the
fix/prose-prescribe-what-we-observed
branch
from
July 27, 2026 15:50
e7ed77e to
0344a29
Compare
leeovery
force-pushed
the
fix/prose-closing-turn-and-known-difference
branch
from
July 27, 2026 15:52
d00a14a to
c15985f
Compare
leeovery
force-pushed
the
fix/prose-prescribe-what-we-observed
branch
from
July 27, 2026 15:52
0344a29 to
15960f6
Compare
leeovery
force-pushed
the
fix/prose-closing-turn-and-known-difference
branch
from
July 27, 2026 15:53
c15985f to
5c8eaa3
Compare
leeovery
force-pushed
the
fix/prose-prescribe-what-we-observed
branch
from
July 27, 2026 15:53
15960f6 to
3796225
Compare
leeovery
force-pushed
the
fix/prose-closing-turn-and-known-difference
branch
from
July 27, 2026 15:54
5c8eaa3 to
b25026e
Compare
leeovery
force-pushed
the
fix/prose-prescribe-what-we-observed
branch
from
July 27, 2026 15:54
3796225 to
93eeae7
Compare
leeovery
force-pushed
the
fix/prose-closing-turn-and-known-difference
branch
from
July 27, 2026 15:56
b25026e to
72d1fbf
Compare
leeovery
force-pushed
the
fix/prose-prescribe-what-we-observed
branch
from
July 27, 2026 15:56
93eeae7 to
8c7ae09
Compare
leeovery
force-pushed
the
fix/prose-closing-turn-and-known-difference
branch
from
July 27, 2026 15:57
72d1fbf to
7f84584
Compare
leeovery
force-pushed
the
fix/prose-prescribe-what-we-observed
branch
from
July 27, 2026 15:57
8c7ae09 to
4073006
Compare
leeovery
force-pushed
the
fix/prose-closing-turn-and-known-difference
branch
from
July 27, 2026 15:58
7f84584 to
d5175ed
Compare
leeovery
force-pushed
the
fix/prose-prescribe-what-we-observed
branch
from
July 27, 2026 15:58
4073006 to
c959550
Compare
leeovery
force-pushed
the
fix/prose-closing-turn-and-known-difference
branch
from
July 27, 2026 15:59
d5175ed to
c992f1d
Compare
leeovery
force-pushed
the
fix/prose-prescribe-what-we-observed
branch
from
July 27, 2026 15:59
c959550 to
249f415
Compare
leeovery
force-pushed
the
fix/prose-closing-turn-and-known-difference
branch
from
July 27, 2026 16:00
c992f1d to
c6d27ea
Compare
leeovery
force-pushed
the
fix/prose-prescribe-what-we-observed
branch
from
July 27, 2026 16:00
249f415 to
1a81cbb
Compare
leeovery
force-pushed
the
fix/prose-closing-turn-and-known-difference
branch
from
July 27, 2026 16:01
c6d27ea to
ddd8f1b
Compare
leeovery
force-pushed
the
fix/prose-prescribe-what-we-observed
branch
from
July 27, 2026 16:01
1a81cbb to
77b5189
Compare
leeovery
force-pushed
the
fix/prose-closing-turn-and-known-difference
branch
from
July 27, 2026 16:02
ddd8f1b to
07bdc40
Compare
leeovery
force-pushed
the
fix/prose-prescribe-what-we-observed
branch
from
July 27, 2026 16:02
77b5189 to
992639b
Compare
leeovery
force-pushed
the
fix/prose-closing-turn-and-known-difference
branch
from
July 27, 2026 17:05
07bdc40 to
9fdf6ab
Compare
leeovery
force-pushed
the
fix/prose-prescribe-what-we-observed
branch
from
July 27, 2026 17:05
992639b to
f6f4e39
Compare
leeovery
changed the base branch from
fix/prose-closing-turn-and-known-difference
to
main
July 27, 2026 17:05
… fire, lint the scope Three things the full run turned up, none of them failures. The asserter had begun comparing the action record against the walker's narrative unprompted, and reporting where they diverged. It is the right instinct and it was nobody's instruction, so a run that depended on it was depending on a coincidence. It is now required, with both directions named: narrated but not recorded means the walker described something it did not do, and the step resting on that claim fails; recorded but not narrated is usually orientation and fails nothing, but is reported, because a call that touched state and went unmentioned is the shape a silent repair takes. The two streams exist so neither is taken on trust, which only holds if they are actually set against each other. engine_before_write was declared on every case and could only ever fire on the three that write state. Reporting N/A seven times is honest but it is still a check dressed as coverage, so it is declared only where a walk can trip it. The check itself stays: it is the anti-fabrication guard for anything that lands state, and cases that land state are the direction we are heading. The scope lint is new. A case's file list is not documentation — it decides whether editing a file selects that case for a run, so prose the walk goes through but the case omits can be changed without the test that covers it ever running again. Every case has such gaps. The list cannot be built by following links: the reachable set is far wider than the walked one, and a case that declared everything reachable would be selected for branches it deliberately stops before. So it is computed from the walk's own Reads and reported as a finding about the case, correcting nothing. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
leeovery
force-pushed
the
fix/prose-prescribe-what-we-observed
branch
from
July 27, 2026 17:06
f6f4e39 to
7fbbbd8
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Three things the full run turned up, none of them failures.
The asserter's cross-check is now prescribed
It had begun comparing the action record against the walker's narrative unprompted, and reporting divergences. Right instinct — but nobody's instruction, so any run depending on it was depending on a coincidence.
Now required, both directions named:
The two streams exist so neither is taken on trust. That only holds if they're actually set against each other every time.
engine_before_writedeclared only where it can fireIt was on all ten cases and could only ever trip on the three that write state. Reporting
N/Aseven times is honest, but it's still a check dressed as coverage.The check itself stays — it's the anti-fabrication guard for anything landing state, and state-landing cases are the direction we're heading.
New: the scope lint
A case's
files[]isn't documentation — it decides whether editing a file selects that case for a run. Prose the walk goes through but the case omits can be changed without the test covering it ever running again. Every case has such gaps today.It can't be built by following links: the reachable set is far wider than the walked one, and a case declaring everything reachable would be selected for branches it deliberately stops before (
session-loop.md,task-loop.md,conclude-discovery.md…). So it's computed from the walk's ownReadcalls, and reported as a finding about the case — correcting nothing, since which files belong is an authoring judgement.Test plan
cats, and reports each file once🤖 Generated with Claude Code
Stack